#include <bits/stdc++.h>

using namespace std;

const int maxn=100005;
int ch[maxn][26];
int fail[maxn];
int val[maxn],lst[maxn];
char str[maxn],s[maxn];
int pos[maxn];
char out[maxn];
int nodes;
int q[maxn];

inline int ord(const char &c){ return c-'a';}

int main(){
    int n,l,f,r,outpos;
    scanf("%s%d",str,&n);

    for(int i=0;i<n;i++){
        scanf("%s",s);
        int len=strlen(s);
        int cur=0;
        for(int j=0;j<len;j++){
            if(!ch[cur][ord(s[j])]) ch[cur][ord(s[j])]=++nodes;
            cur=ch[cur][ord(s[j])];
        }
        val[cur]=len;
    }

    f=r=0;
    for(int i=0;i<26;i++)
        if(ch[0][i]) q[r++]=ch[0][i];

    for(;f<r;f++){
        const int &cur=q[f];
        for(int j=0;j<26;j++){
            if(!ch[cur][j]) continue;
            q[r++]=ch[cur][j];
            int t=fail[cur];
            while(t&&!ch[t][j]) t=fail[t];
            if(ch[t][j]){
                fail[ch[cur][j]]=ch[t][j];
                lst[ch[cur][j]]=val[fail[ch[cur][j]]]?fail[ch[cur][j]]:lst[fail[ch[cur][j]]];
            }
        }
    }

    outpos=0;
    l=strlen(str);
    for(int i=0;i<l;i++){
        int cur;
        if(outpos) cur=pos[outpos-1];
        else cur=0;
        while(cur&&!ch[cur][ord(str[i])]) cur=fail[cur];
        if(ch[cur][ord(str[i])]) cur=ch[cur][ord(str[i])];
        pos[outpos]=cur;
        out[outpos]=str[i];
        int p=cur;
        if(!val[p]) p=lst[p];
        if(val[p])
            outpos-=val[p];
        outpos++;
    }

    for(int i=0;i<outpos;i++) putchar(out[i]);
    putchar('\n');
    return 0;
}
